Unityのコンパイル中か否かをメインスレッド外から見分ける方法
概要
そもMainThread外からそういうのを知る方法があるのか?
という話をしていたら、
Unityがコンパイル時に作成、削除してるファイルの存在をけーご君から教えて貰った。
内容
Unity Editorがコンパイル中にSublimeSocketAssetのコード補完走らせたりすると、
SublimeSocketAssetが原因でUnity Editorが固まる、という感じだったので、
対処法としてコンパイル中だったら補完を走らせなくする、とかを考えようとしていたが、
MainThread外からUnityがコンパイル中かどうかを知る術が無い。
というわけで、下記の出番。
Project/Library/ScriptAssemblies/CompilationCompleted.txt というファイルが、
・コンパイル開始時に消される
・コンパイル完了時に作成される
という挙動をしてる。
Win版も一緒っぽい。
わかりやすいかどうかはアレだがgifで。
SublimeSocketAssetだと、ファイル保存のアクションからUnityのコンパイルを(Unityから開いたファイルで無くとも)
実行されるので、
保存(⌘+s) -> コンパイル開始 -> Finderから該当のファイルが消える -> コンパイル終了と同時にファイルが現れる
というのが観測できた。
コンパイル中にUnityEditor内でThread走らせると、変な死に方することが有るらしい。
まあなーーー実行系がそれだしな。
このへんでコンパイル中だったら、みたいな処理を作るかなあ。